package com.abner.design.patterns.observer;

/**
 * 观察者模式
 * 	观察者模式是对象的行为模式，又叫发布-订阅(Publish/Subscribe)模式。
 * 	观察者模式定义了一种一对多的依赖关系，让多个观察者对象同时监听某一个主题对象，
 * 	主题对象在状态发生变化时，会通知所有观察者对象。Redis和常用消息中间件的发布订阅模式，都是基于该原理实现。
 *
 * 好处:
 * 	 1) 观察者模式设计后，会以集合的方式来管理用户(Observer)，包括注册，移除和通知。
 *   2) 这样，我们增加观察者(这里可以理解成一个新的公告板)，就不需要去修改核心类 WeatherData 不会修改代码，遵守了 ocp 原则
 * @author abner
 */
public class Client {


	/**
	 * 天气预报项目需求,具体要求如下：
	 *  1) 气象站可以将每天测量到的温度，湿度，气压等等以公告的形式发布出去(比如发布到自己的网站或第三方)。
	 *  2) 需要设计开放型 API，便于其他第三方也能接入气象站获取数据。
	 *  3) 提供温度、气压和湿度的接口
	 *  4) 测量数据更新时，要能实时的通知给第三方
	 * @param args
	 */
	public static void main(String[] args) {

		WeatherData weatherData = new WeatherData();

		weatherData.registerObserver(new BaiduSiteObserver());

		weatherData.setData(0f, 100f, 30.3f);

	}

}
